package com.dd.controller;

import com.dd.model.AqiDistributionStatics;
import com.dd.service.AqiDistributionStaticsService;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;

import java.util.List;

/*`AQIDistributionStatisticsController` 是 JavaFX 应用中的一个控制器类，主要用于“空气质量指数（AQI）分布统计”页面的数据展示和交互。它的主要作用包括：

1. **初始化表格**：在 `initialize()` 方法中，将 AQI 分布统计数据的各个字段（等级、描述、数量）绑定到 TableView 的对应列上。
2. **加载数据**：通过 `AqiDistributionStaticsService` 获取 AQI 分布统计数据，并将其显示在表格中。
3. **关闭窗口**：提供 `handleClose()` 方法，允许用户关闭当前统计窗口。

**总结**：  
这个类就是“空气质量分布统计页面”的控制器，负责把各等级 AQI 的分布数据加载并展示在表格里，并提供关闭窗口的功能。
*/
public class AQIDistributionStatisticsController {
    @FXML
    private TableView<AqiDistributionStatics> aqiTable;
    @FXML
    private TableColumn<AqiDistributionStatics, Integer> levelCol;
    @FXML
    private TableColumn<AqiDistributionStatics, String> descCol;
    @FXML
    private TableColumn<AqiDistributionStatics, Integer> countCol;

    private final AqiDistributionStaticsService staticsService = new AqiDistributionStaticsService();

    @FXML
    public void initialize() {
        levelCol.setCellValueFactory(new PropertyValueFactory<>("level"));
        descCol.setCellValueFactory(new PropertyValueFactory<>("desc"));
        countCol.setCellValueFactory(new PropertyValueFactory<>("count"));
        loadTableData();
    }

    private void loadTableData() {
        List<AqiDistributionStatics> data = staticsService.getAqiDistributionStatics();
        ObservableList<AqiDistributionStatics> obsList = FXCollections.observableArrayList(data);
        aqiTable.setItems(obsList);
    }

    @FXML
    private void handleClose() {
        Stage stage = (Stage) aqiTable.getScene().getWindow();
        stage.close();
    }
}
